<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>组合函数</title>
  </head>
  <body>
    <script>
      /* 
         组合函数：
                -如果一个函数要经过多个函数处理才能得到最终结果，这时候可以把中间的过程函数合并程一个函数
                -函数就像是数据的管道，函数组合就是把这些函数连接起来，让数据穿过多个管道，得到最终结果
                -组合函数默认从右到左执行
                -lodash中的组合函数 nodes中09.js
                -函数组合要满足结合律 ->函数不管怎么组合必须满足结果一致
         lodash/fp:
                -lodash的fp模块提供了实用的对函数式编程友好的方法
                -提供了不可变的方法
       */
      //求数组的最后一项
      function compose(fn1, fn2) {
        return function (v) {
          return fn1(fn2(v));
        };
      }
      function reverse(arr) {
        return arr.reverse();
      }
      function first(arr) {
        return arr[0];
      }
      const last = compose(first, reverse);
      console.log(last([1, 2, 3, 4]));
    </script>
  </body>
</html>
